I programmi che convertono programmi scritti in un certo linguaggio in un altro linguaggio sono chiamati traduttori.
Il linguaggio in cui è scritto il programma è detto linguaggio sorgente e quello in cui viene convertito è detto linguaggio oggetto.
I traduttori si possono dividere in due gruppi a seconda della relazione tra linguaggio sorgente e linguaggio oggetto. Quando il linguaggio sorgente è essenzialmente una rappresentazione simbolica di un linguaggio macchina numerico, il traduttore viene chiamato assemblatore e il linguaggio sorgente, linguaggio Assembly. Quando il linguaggio sorgente è un linguaggio di alto livello (come C o Pascal) il traduttore è chiamato compilatore.
La ragione per cui si usa programmare in linguaggio Assembly piuttosto che in linguaggio macchina è perché: è molto più facile l'uso di nomi e indirizzi simbolici piuttosto che l'uso di valori numerici.
Sarà poi l'assemblatore ad occuparsi di tradurre il programma scritto in Assembly in linguaggio macchina binario, traducendo i codici mnemonici delle istruzioni in codici operativi, sostituendo tutti i riferimenti simbolici degli indirizzi con la loro forma binaria e riservando lo spazio di memoria per le variabili.